home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / bprof-1.1 / bprof-1 / bprof / String.sfpnt.Map.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-19  |  2.5 KB  |  90 lines

  1. // This may look like C code, but it is really -*- C++ -*-
  2. /* 
  3. Copyright (C) 1988 Free Software Foundation
  4.     written by Doug Lea (dl@rocky.oswego.edu)
  5.  
  6. This file is part of the GNU C++ Library.  This library is free
  7. software; you can redistribute it and/or modify it under the terms of
  8. the GNU Library General Public License as published by the Free
  9. Software Foundation; either version 2 of the License, or (at your
  10. option) any later version.  This library is distributed in the hope
  11. that it will be useful, but WITHOUT ANY WARRANTY; without even the
  12. implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  13. PURPOSE.  See the GNU Library General Public License for more details.
  14. You should have received a copy of the GNU Library General Public
  15. License along with this library; if not, write to the Free Software
  16. Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  17. */
  18.  
  19.  
  20. #ifndef _StringsfpntMap_h
  21. #ifdef __GNUG__
  22. #pragma interface
  23. #endif
  24. #define _StringsfpntMap_h 1
  25.  
  26. #include <Pix.h>
  27. #include "String.defs.h"
  28.  
  29. #include "sources.h"        // Line added by BdB
  30.  
  31. class StringsfpntMap
  32. {
  33. protected:
  34.   int                   count;
  35.   sfpnt                   def;
  36.  
  37. public:
  38.                         StringsfpntMap(sfpnt  dflt);
  39.   virtual              ~StringsfpntMap();
  40.  
  41.   int                   length();                // current number of items
  42.   int                   empty();
  43.  
  44.   virtual int           contains(String& key);      // is key mapped?
  45.  
  46.   virtual void          clear();                 // delete all items
  47.  
  48.   virtual sfpnt&          operator [] (String& key) = 0; // access contents by key
  49.  
  50.   virtual void          del(String& key) = 0;       // delete entry
  51.  
  52.   virtual Pix           first() = 0;             // Pix of first item or 0
  53.   virtual void          next(Pix& i) = 0;        // advance to next or 0
  54.   virtual String&          key(Pix i) = 0;          // access key at i
  55.   virtual sfpnt&          contents(Pix i) = 0;     // access contents at i
  56.  
  57.   virtual int           owns(Pix i);             // is i a valid Pix  ?
  58.   virtual Pix           seek(String& key);          // Pix of key
  59.  
  60.   sfpnt&                  dflt();                  // access default val
  61.  
  62.   void                  error(const char* msg);
  63.   virtual int           OK() = 0;                // rep invariant
  64. };
  65.  
  66.  
  67. inline StringsfpntMap::~StringsfpntMap() {}
  68.  
  69. inline int StringsfpntMap::length()
  70. {
  71.   return count;
  72. }
  73.  
  74. inline int StringsfpntMap::empty()
  75. {
  76.   return count == 0;
  77. }
  78.  
  79. inline sfpnt& StringsfpntMap::dflt()
  80. {
  81.   return def;
  82. }
  83.  
  84. inline StringsfpntMap::StringsfpntMap(sfpnt  dflt) :def(dflt)
  85. {
  86.   count = 0;
  87. }
  88.  
  89. #endif
  90.